package org.kgduyjj.toolbox.enumtype;

import org.kgduyjj.toolbox.exception.EnumTypeException;

/**
 * 性别枚举
 * 
 * @author Kgduyjj
 * @since 2020-07-26
 * @version Alpha-1.42
 *
 */
public enum Gender {
	/** 未知 */
	UNKNOWN(0, "未知"),
	/** 男性 */
	MALE(1, "男性"),
	/** 女性 */
	FEMALE(2, "女性");

	private Integer code;
	private String desc;

	private Gender(Integer code, String desc) {
		this.code = code;
		this.desc = desc;
	}

	public Integer getCode() {
		return code;
	}

	public String getDesc() {
		return desc;
	}

	/**
	 * 根据code检查枚举对象
	 * 
	 * @param code
	 * @return
	 */
	public static Gender verificationCode(Integer code) {
		if (null == code) {
			throw new EnumTypeException(Gender.class.getSimpleName() + ":[ 枚举值传入为空 ]");
		}
		for (Gender item : Gender.values()) {
			if (code == item.getCode()) {
				return item;
			}
		}
		throw new EnumTypeException(Gender.class.getSimpleName() + ":[ 枚举对象不存在 ]");
	}

	/**
	 * 转换为指定枚举值，若枚举值不存在则返回空，主要应用于处理页面数据和DTO赋值
	 * 
	 * @param code
	 * @return
	 */
	public static Gender tranfer(Integer code) {
		if (null == code) {
			return null;
		}
		for (Gender item : Gender.values()) {
			if (item.getCode().equals(code)) {
				return item;
			}
		}
		return null;
	}

	/**
	 * 根据code获取对应描述
	 * 
	 * @return
	 */
	public static String getDescByCode(Integer code) {
		Gender E = tranfer(code);
		return E == null ? null : E.getDesc();
	}
}
